package com.ruoyi.utils;


import static org.apache.commons.lang3.StringUtils.isNumeric;

/**
 * 字符串自增方法
 * @author Drj 2021/6/28
 */
public class UtilsAdd {

    /**
     * 字符串+1方法，该方法将其结尾的整数+1,适用于任何以整数结尾的字符串,不限格式，不限分隔符。
     * @author zxcvbnmzb
     * @param testStr 要+i的字符串
     * @return +i后的字符串
     * @exception NumberFormatException
     */
    public static String addOne(String testStr,int i){
        String[] strs = splitNum(testStr);//根据不是数字的字符拆分字符串
        String numStr = strs[1];//取出最后一组数字
        if (numStr != null && numStr.length() > 0) {
            //如果最后一组不以数字结尾，抛NumberFormatException异常
            int n = numStr.length();//取出字符串的长度
            long num = Long.parseLong(numStr) + i;//将该数字加i
            String added = String.valueOf(num);
//            if (num < 10){
//                added = "0"+added ;
//            }
            n = Math.min(n, added.length());
            //拼接字符串
            return testStr.subSequence(0, testStr.length() - n) + added;
        } else {
            throw new NumberFormatException();

        }
    }

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println("addOne:"+addOne("qweqwe5",i+1));
        }


    }
    /**
     * 通过数字切割字符串.
     * 仅切割为两部分
     * @param str
     * @return
     */
    public static String[] splitNum(String str)
    {
        String[] result = new String[2];
        for (int i = 0; i < str.length(); i++)
        {
            String t = new String(new char[] {str.charAt(i)});
            if (isNumeric(t) && i < str.length())
            {
                result[0] = str.substring(0, i);
                result[1] = str.substring(i);
                break;
            }else{
                result[0] = str;
            }
        }
        return result;
    }

}
